]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
11 months agotest-tool: Set up a temporary xdg-home directory
Florian Müllner [Thu, 27 Nov 2025 13:43:43 +0000 (14:43 +0100)]
test-tool: Set up a temporary xdg-home directory

Currently the launched gnome-shell instance uses the regular xdg-home
directories, which means it picks up settings, extensions etc. from
the current user.

Avoid this by pointing the xdg-home dirs to a temporary directory, so
everything that respects the basedir spec runs with a clean slate.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Remove --wayland/-x11 options
Florian Müllner [Thu, 27 Nov 2025 13:25:15 +0000 (14:25 +0100)]
test-tool: Remove --wayland/-x11 options

Running as a wayland compositor is the only available option nowadays.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Replace --nested with --devkit
Florian Müllner [Thu, 27 Nov 2025 13:19:13 +0000 (14:19 +0100)]
test-tool: Replace --nested with --devkit

With the removal of the X11 backend, the --nested option isn't just
unavailable by default, but gone for good.

Switch to devkit to allow running tests in a window inside the session.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Remove option to upload perf reports
Florian Müllner [Thu, 27 Nov 2025 14:06:12 +0000 (15:06 +0100)]
test-tool: Remove option to upload perf reports

If memory serves well, uploads happened to a server in Owen's living
room. It is doubtful that the server-side still exists anywhere, or
that anyone has uploaded any reports in the last 15 years, so stop
carrying that code around.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Remove unused imports
Florian Müllner [Thu, 27 Nov 2025 14:18:38 +0000 (15:18 +0100)]
test-tool: Remove unused imports

Fixes: ee7e62c9c8 ("perf-tool: Spawn perf-tool-helper from gnome-shell")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Adjust name in --version
Florian Müllner [Thu, 27 Nov 2025 14:41:44 +0000 (15:41 +0100)]
test-tool: Adjust name in --version

The tool was renamed from "perf-tool" a while ago, to reflect
that its purpose has shifted from collecting performance data
to running gnome-shell with scripted tests.

Fixes: 9bb003463c ("test-tool: Rename perf-tool")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agooverviewControls: Only import STARTUP_ANIMATION_TIME from layout
Marco Trevisan (Treviño) [Thu, 27 Nov 2025 10:27:35 +0000 (11:27 +0100)]
overviewControls: Only import STARTUP_ANIMATION_TIME from layout

It's the only value we use from that module, and this would ensure that
the value is actually imported and it's not potentially an undefined
value

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3982>

11 months agolayout: Export STARTUP_ANIMATION_TIME
Marco Trevisan (Treviño) [Tue, 25 Nov 2025 21:40:00 +0000 (22:40 +0100)]
layout: Export STARTUP_ANIMATION_TIME

We are using it in overviewControls but the value is not exported.

This caused an issue when the animations are not enabled, since in a
racy way (e.g. only sometimes, depending on the init speed) the value
was undefined, and so we ended up falling back to the default animation
duration time.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3982>

11 months agoenvironment: Always honor easing duration settings
Marco Trevisan (Treviño) [Tue, 25 Nov 2025 21:48:54 +0000 (22:48 +0100)]
environment: Always honor easing duration settings

In case an actor easing is created without an explicit duration, we
should rely to the default animation that Clutter.Actor.save_easing_state()
sets to 250ms.

This fine in normal use cases, but in case the animations are disabled
the current code skips calling our Clutter.Actor.set_easing_duration()
override, and so we just end up leaving the actor easing time to 250ms,
not respecting the St settings

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3983>

11 months agoUpdate Basque translation
Asier Saratsua Garmendia [Mon, 24 Nov 2025 18:47:28 +0000 (18:47 +0000)]
Update Basque translation

11 months agoUpdate Indonesian translation
Andika Triwidada [Mon, 24 Nov 2025 12:41:20 +0000 (12:41 +0000)]
Update Indonesian translation

(cherry picked from commit 02901236af96666807087ee55cd3fba98e1201ba)

11 months agoci: Bump mutter image
Florian Müllner [Sat, 22 Nov 2025 01:32:05 +0000 (02:32 +0100)]
ci: Bump mutter image

Pull in the original gdk-pixbuf2 package with the glycin loader
again.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3973>

11 months agoRevert "ci: Reinstall gdk-pixbuf2 package"
Florian Müllner [Sat, 22 Nov 2025 01:26:34 +0000 (02:26 +0100)]
Revert "ci: Reinstall gdk-pixbuf2 package"

The mutter image no longer rebuilds gdk-pixbuf2 without
the glycin loader, so SVG support works again without
reinstalling the package.

This reverts commit 950e6c5c027342d2749488a63aeaf8fcfc20b4ed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3973>

11 months agomessageList: Check if Message is expanded
SymphonySimper [Sat, 22 Nov 2025 13:01:05 +0000 (18:31 +0530)]
messageList: Check if Message is expanded

Check if Message is expanded in expand method, to prevent rerunning the
expand animation when it's already expanded

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3978>

11 months agoscreenShield: Emit ::screen-lock-shown early with animated fades
Carlos Garnacho [Fri, 21 Nov 2025 13:46:03 +0000 (14:46 +0100)]
screenShield: Emit ::screen-lock-shown early with animated fades

If the screen is locked with animatedFade parameter enabled, the
screenShield currently defers the emission of this signal until the
lightbox toggles on. However the lightbox might be prevented from
ever doing that by later input.

If this emission is delayed enough, it will result in ShellDBus
missing the D-Bus timeout for replying to the Lock request, since
it does rely on this signal being emitted in order to reply back.

It does however make sense to keep setting the active state after
the animation, so the inhibitors are synchronized at the point the
lightbox kicks in.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8644
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3971>

11 months agodash: Fix wrong separator position
Raghuveer Kasaraneni [Sun, 5 Sep 2021 08:33:18 +0000 (10:33 +0200)]
dash: Fix wrong separator position

The separator position takes drag placeholders into account, but not
any removed favorites that are currently animating out.

As a result, we may end up with the wrong position and some app icons appear
on the wrong side of the separator.

To fix, account for all items before the separator that are currently
animating out.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3966
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3799
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1973>

11 months agoUpdate Persian translation
سبحان [Fri, 21 Nov 2025 01:45:39 +0000 (01:45 +0000)]
Update Persian translation

11 months agorunDialog: Disable internal commands if parental controls are enabled
Philip Withnall [Thu, 20 Nov 2025 16:37:58 +0000 (16:37 +0000)]
runDialog: Disable internal commands if parental controls are enabled

This reduces the chance of the child user being able to monkey patch
gnome-shell to disable things like screen time limits using Looking
Glass.

Spotted by Sergey Bugaev.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3968>

11 months agoparentalControlsManager: Add more helper methods
Philip Withnall [Thu, 20 Nov 2025 16:32:18 +0000 (16:32 +0000)]
parentalControlsManager: Add more helper methods

For working out whether any parental controls apply to the current user.
These will be used in an upcoming commit.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3968>

11 months agorunDialog: Factor out calculation of whether to enable internal commands
Philip Withnall [Thu, 20 Nov 2025 16:31:46 +0000 (16:31 +0000)]
runDialog: Factor out calculation of whether to enable internal commands

This doesn’t result in any behaviour change at the moment, but will
simplify an upcoming commit.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3968>

11 months agoswipeTracker: Immediately flip delta in RTL locales
Florian Müllner [Thu, 20 Nov 2025 15:09:44 +0000 (16:09 +0100)]
swipeTracker: Immediately flip delta in RTL locales

The delta is currently flipped in a shared code path, after appending
the unmodified value to the event history. As a result, the calculated
final velocity for touchpad gestures is wrong in RTL locales.

Fix this by modifying the delta immediately when handling the events,
so that all other code operates on the correct values.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8840
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3967>

11 months agoswipeTracker: Flip pan gesture velocity in RTL locales
Florian Müllner [Thu, 20 Nov 2025 14:51:23 +0000 (15:51 +0100)]
swipeTracker: Flip pan gesture velocity in RTL locales

Like the gesture delta, the final velocity needs to be flipped in
RTL locales, otherwise we end up cancelling out the gesture progress.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3967>

11 months agoswipeTracker: Simplify finding previous point
Florian Müllner [Thu, 20 Nov 2025 13:34:21 +0000 (14:34 +0100)]
swipeTracker: Simplify finding previous point

We have findLastIndex() nowadays to search an array in reverse
direction.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3967>

11 months agosubprojects: Bump libshew revision
Florian Müllner [Wed, 19 Nov 2025 14:32:57 +0000 (15:32 +0100)]
subprojects: Bump libshew revision

With the X11 session gone, libshew dropped support for the X11 backend.

Bump the revision to pull in that change.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3964>

11 months agoshellDBus: Send an activation token for Accelerator(De)Activated
Sebastian Wick [Tue, 14 Oct 2025 20:36:16 +0000 (22:36 +0200)]
shellDBus: Send an activation token for Accelerator(De)Activated

This will be useful for the global shortcuts portal implementation.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3917>

11 months agoUpdate Russian translation
Artur S0 [Mon, 17 Nov 2025 08:28:35 +0000 (08:28 +0000)]
Update Russian translation

11 months agotimeLimitsManager: Slightly tweak a comment for accuracy
Ignacy Kuchciński [Wed, 12 Nov 2025 15:55:09 +0000 (15:55 +0000)]
timeLimitsManager: Slightly tweak a comment for accuracy

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3958>

11 months agotimeLimitsManager: Batch-submit usage records to malcontent-timerd
Philip Withnall [Tue, 11 Nov 2025 15:31:22 +0000 (15:31 +0000)]
timeLimitsManager: Batch-submit usage records to malcontent-timerd

This was skipped in the first version of parental controls screen time
limits, because we forgot that `RecordUsage()` already allows batch
submission of usage records.

Rework the code to make one D-Bus call rather than O(N) calls.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3958>

11 months agoswitcherPopup: Fix switch-group mouse click regression
Håkon Hægland [Tue, 11 Nov 2025 18:46:32 +0000 (19:46 +0100)]
switcherPopup: Fix switch-group mouse click regression

The LongPressGesture 'may-recognize' callback in commit 314137c8c was
checking if clicks were inside '_switcherList', but thumbnails shown by
switch-group are siblings of _switcherList, not children.

This caused the gesture to incorrectly identify thumbnail clicks as
'outside' clicks, closing the popup before the click could complete.

Fix by adding a _isActorOutside() helper method that subclasses can
override to check additional containers. AppSwitcherPopup now properly
checks both _switcherList and _thumbnails.

Tested on Ubuntu 25.10 with GNOME Shell 49.0. Confirmed:
- switch-group mouse clicks now work
- switch-applications and switch-windows unaffected
- clicking outside the popup still closes it correctly
- no regressions introduced

Fixes: 314137c8c9 ("switcherPopup: Move to a ClutterGesture for closing the popup")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8812
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3959>

11 months agoUpdate Chinese (Taiwan) translation
Cheng-Chia Tseng [Mon, 10 Nov 2025 13:42:33 +0000 (13:42 +0000)]
Update Chinese (Taiwan) translation

(cherry picked from commit 318af150fbc8071b4bf20b545da5d97cf28a11ca)

12 months agomain: Register session with GDM on startup
Adrian Vovk [Thu, 1 May 2025 22:34:52 +0000 (18:34 -0400)]
main: Register session with GDM on startup

When no monitor is connected, gnome-shell starts but never emits
`startup-prepared` nor `startup-complete`. As a result, GDM never
detects that the shell has launched and plymouthd remains running,
preventing the system from reaching graphical.target.

Ensure that registerSessionWithGDM() is called even when no monitor
is connected, so GDM can terminate plymouthd and allow the system to
reach graphical.target properly.

Part of https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/285

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3708>

12 months agoUpdate Occitan translation
Quentin PAGÈS [Fri, 7 Nov 2025 18:10:11 +0000 (18:10 +0000)]
Update Occitan translation

12 months agoUpdate Persian translation
سبحان [Thu, 6 Nov 2025 19:29:16 +0000 (19:29 +0000)]
Update Persian translation

12 months agomessageList: Recognize URLHighlighter gesture only if clicking on an URL
Carlos Garnacho [Thu, 6 Nov 2025 13:37:06 +0000 (14:37 +0100)]
messageList: Recognize URLHighlighter gesture only if clicking on an URL

Otherwise it would still consume the press+release, making the overall
notification unable to handle activation.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8799
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3954>

12 months agoUpdate Turkish translation
Emin Tufan Çetin [Wed, 5 Nov 2025 19:54:23 +0000 (19:54 +0000)]
Update Turkish translation

12 months agotimeLimitsManager: Integrate with malcontent and lock when limit reached
Ignacy Kuchciński [Mon, 18 Aug 2025 09:58:50 +0000 (11:58 +0200)]
timeLimitsManager: Integrate with malcontent and lock when limit reached

Lock the screen when screen time limit is reached in a child session,
which required extending the existing TimeLimitsManager functionality to
include the parental controls session limits.

TimeLimitsDispatcher was also adjusted to take into account parental
controls session limits before making any user facing changes.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/work_items/8575
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agotimeLimitsManager: Convert unix times to ISO 8601
Ignacy Kuchciński [Tue, 4 Nov 2025 22:07:54 +0000 (23:07 +0100)]
timeLimitsManager: Convert unix times to ISO 8601

Convert unix epoch times to ISO 8601 formatted strings for logging
purposes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agotimeLimitsManager: Rename function updating state machine
Ignacy Kuchciński [Mon, 27 Oct 2025 23:53:41 +0000 (00:53 +0100)]
timeLimitsManager: Rename function updating state machine

Rename _updateSettings function to _updateStateMachine, since that's
what the function actually does, starting or stopping the machine
depending on the 'history-enabled' GSetting. Moreover, in the future
we'll take into account parental controls settings too, so renaming the
function to be more generic will avoid confusion later on.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agotests/unit: Add a helper method in TimeLimitsManager
Ignacy Kuchciński [Thu, 28 Aug 2025 09:23:15 +0000 (11:23 +0200)]
tests/unit: Add a helper method in TimeLimitsManager

Currently we create a new `TimeLimitsManager` for each of the unit tests
for testing the wellbeing screen time limit, with the same parameters.
Rather than having to repeat the entire constructor call multiple times,
factor it out into a helper method on the `TestHarness`. There is no
difference in functionality itself.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agotimeLimitsManager: Clean up property description
Ignacy Kuchciński [Fri, 22 Aug 2025 13:49:35 +0000 (15:49 +0200)]
timeLimitsManager: Clean up property description

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agodbus-interfaces: Add MalcontentTimer child interface
Ignacy Kuchciński [Mon, 18 Aug 2025 09:54:57 +0000 (11:54 +0200)]
dbus-interfaces: Add MalcontentTimer child interface

Add org.freedesktop.MalcontentTimer1.Child interface for accessing the
screen time and app usage periods for current user account. Currently
unused, will provide necessary functionality when integrating parental
controls session limits with TimeLimitsManager.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agoparentalControlsManager: Add support for session limits
Ignacy Kuchciński [Mon, 18 Aug 2025 09:44:42 +0000 (11:44 +0200)]
parentalControlsManager: Add support for session limits

Add ability to check if session limits are enabled for users using API
introduced in malcontent 0.14.0. The `get_session_limits_async` function
is actually available since 0.5.0, but the signal
`session-limits-changed` was only introduced in 0.14.0, so check for
function `get_daily_limit` which was introduced in 0.14.0 to be sure
we're using correct version. This allows us to keep filtering apps, even
if the library version doesn't fully support session limits.

Will be used in the future to integrate parental controls session
limits.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agoDrop restarting capapbility
Bilal Elmoussaoui [Tue, 4 Nov 2025 14:41:49 +0000 (15:41 +0100)]
Drop restarting capapbility

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3768>

12 months agoAdapt to dropped X11 backend
Bilal Elmoussaoui [Tue, 4 Nov 2025 13:08:38 +0000 (14:08 +0100)]
Adapt to dropped X11 backend

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3768>

12 months agograbHelper: Port to using ClickGesture to dismiss
Carlos Garnacho [Wed, 8 Oct 2025 18:36:39 +0000 (20:36 +0200)]
grabHelper: Port to using ClickGesture to dismiss

There's a few things we don't need anymore here. We don't
need holding on the captured events until button release
anymore, and we don't need to track crossing events outside
the grab as those will not get emitted as usual. This allows
for a few simplifications in handling the events for the
GrabHelper.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agograbHelper: Drop unused method
Carlos Garnacho [Wed, 8 Oct 2025 18:10:51 +0000 (20:10 +0200)]
grabHelper: Drop unused method

This was meant for widgets that don't exist anymore, we
do not need to explicitly ignore button releases anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoappDisplay: Drop dead function call
Carlos Garnacho [Wed, 8 Oct 2025 18:08:31 +0000 (20:08 +0200)]
appDisplay: Drop dead function call

We call this menu manager method that does nothing. We
can remove this method and the single call in the codebase.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoibusCandidatePopup: Use click gesture to activate candidates
Carlos Garnacho [Wed, 8 Oct 2025 17:58:40 +0000 (19:58 +0200)]
ibusCandidatePopup: Use click gesture to activate candidates

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agowindowMenu: Use click gesture for window menu source actor
Carlos Garnacho [Wed, 8 Oct 2025 17:51:41 +0000 (19:51 +0200)]
windowMenu: Use click gesture for window menu source actor

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoshellEntry: Use click gesture for entry menu
Carlos Garnacho [Wed, 8 Oct 2025 17:48:01 +0000 (19:48 +0200)]
shellEntry: Use click gesture for entry menu

Use a single gesture in the capture phase, we don't need
more than that, and we don't overlap with ClutterText event
handling.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agosearchController: Maybe reset search using a click gesture
Carlos Garnacho [Wed, 8 Oct 2025 17:37:04 +0000 (19:37 +0200)]
searchController: Maybe reset search using a click gesture

We don't want the gesture to consume input though, we just want
it as a trigger on click, so use the ::may-recognize signal to
hook this "reset, but passthrough" behavior on.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agooverview: Drop ::event connection in the cover pane
Carlos Garnacho [Wed, 8 Oct 2025 17:17:06 +0000 (19:17 +0200)]
overview: Drop ::event connection in the cover pane

We don't need an event handler on this widget to have it cover
other actors from receiving input.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agomessageList: Port URLHighlighter to using a click gesture
Carlos Garnacho [Wed, 8 Oct 2025 16:24:10 +0000 (18:24 +0200)]
messageList: Port URLHighlighter to using a click gesture

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agopopupMenu: Port switches to using a pan gesture
Carlos Garnacho [Wed, 8 Oct 2025 16:10:13 +0000 (18:10 +0200)]
popupMenu: Port switches to using a pan gesture

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agopanelMenu: Port to using ClickGesture
Carlos Garnacho [Fri, 26 Sep 2025 03:25:15 +0000 (05:25 +0200)]
panelMenu: Port to using ClickGesture

Only enable this gesture if a menu is set, so there's no
overlap with other gestures in buttons without a menu (e.g.
the ActivitiesButton).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agopanel: Use ClickGesture at ActivitiesButton for activation
Carlos Garnacho [Fri, 26 Sep 2025 03:23:10 +0000 (05:23 +0200)]
panel: Use ClickGesture at ActivitiesButton for activation

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agostatus/remoteAccess: Port to click gestures
Carlos Garnacho [Fri, 26 Sep 2025 03:01:01 +0000 (05:01 +0200)]
status/remoteAccess: Port to click gestures

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoslider: Use actor relative coordinates when dragging
Carlos Garnacho [Fri, 26 Sep 2025 02:42:47 +0000 (04:42 +0200)]
slider: Use actor relative coordinates when dragging

Stop working on absolute coordinates here, this is not necessary.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoslider: Port to using a pan gesture
Carlos Garnacho [Fri, 26 Sep 2025 02:38:56 +0000 (04:38 +0200)]
slider: Port to using a pan gesture

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoscreenshot: Port SelectArea to using pan gesture
Carlos Garnacho [Fri, 26 Sep 2025 02:58:06 +0000 (04:58 +0200)]
screenshot: Port SelectArea to using pan gesture

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoscreenshot: Don't special case resetting cursor
Carlos Garnacho [Wed, 8 Oct 2025 10:00:49 +0000 (12:00 +0200)]
screenshot: Don't special case resetting cursor

The case expressed in the comment does not seem to apply anymore,
we can reset the cursor as expected on every leave event.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agosearch: Center name label vertically
Florian Müllner [Tue, 4 Nov 2025 15:14:37 +0000 (16:14 +0100)]
search: Center name label vertically

If all search results of the provider are shown, the "x more" label
is hidden, and the name label has more space than it needs.

Center the label vertically in that case to align with the icon.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8793
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3951>

12 months agotools: Update ci-run-eslint
Florian Müllner [Wed, 2 Jul 2025 14:32:09 +0000 (16:32 +0200)]
tools: Update ci-run-eslint

We are currently still using eslint 8.x which has been unsupported
for quite a while. Update the ci-run-eslint script to a verison
that uses the supported eslint 9.x.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3938>

12 months agoworkspaceThumbnails: Add missing return values to later handlers
Florian Müllner [Mon, 3 Nov 2025 11:50:34 +0000 (12:50 +0100)]
workspaceThumbnails: Add missing return values to later handlers

MetaLaters are source functions, and should therefore return a bool
to indicate whether the source should be removed or continue.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3950>

12 months agojs: Always use SOURCE_CONTINUE/SOURCE_REMOVE in later handlers
Florian Müllner [Mon, 3 Nov 2025 11:49:12 +0000 (12:49 +0100)]
js: Always use SOURCE_CONTINUE/SOURCE_REMOVE in later handlers

The constants are more self-explanatory (and therefore readable)
then plain true/false.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3950>

12 months agobuild/tests: Run shell tests in parallel
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 04:04:04 +0000 (05:04 +0100)]
build/tests: Run shell tests in parallel

There's no reason why this is not the case, given that these tests are
running in completely separated environments, so they are safe to run in
parallel

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>

12 months agooverviewControls: Disconnect signals on destruction
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 04:00:35 +0000 (05:00 +0100)]
overviewControls: Disconnect signals on destruction

While we are not getting errors and the ControlsManger is normally always
alive, during destruction we could still get events from other objects
that are still alive, so disconnect them all

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>

12 months agooverviewControls: Bind state adjustment signals to parent lifetime
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 03:57:50 +0000 (04:57 +0100)]
overviewControls: Bind state adjustment signals to parent lifetime

On tests shutdown we were sometimes getting this error:

  ** Message: 09:29:27.494: Shutting down GNOME Shell

  (gnome-shell:3728700): Gjs-CRITICAL **: 09:29:27.545:
  JS ERROR: TypeError: this._workspacesDisplay is undefined
  _update@resource:///org/gnome/shell/ui/overviewControls.js:599:37
  _initializeUI/<@resource:///org/gnome/shell/ui/main.js:279:14

Which after using the arrow function becomes:

  (gnome-shell:3731979): Gjs-CRITICAL **: 09:30:05.419:
  JS ERROR: TypeError: this._workspacesDisplay is undefined
  _update@resource:///org/gnome/shell/ui/overviewControls.js:599:37
  _init/<@resource:///org/gnome/shell/ui/overviewControls.js:343:67
  _initializeUI/<@resource:///org/gnome/shell/ui/main.js:279:14

This is because the state adjustement object lifetime is not bound to
the ControlsManager, and so we were potentially accessing to invalid
data

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>

12 months agoworkspaceThumbnail: Track later hiding drop placeholder
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 03:48:21 +0000 (04:48 +0100)]
workspaceThumbnail: Track later hiding drop placeholder

When closing the shell during a relayout we are getting this error:

    (gnome-shell:2559407): Gjs-CRITICAL **: 06:57:21.765: Object St.Bin,
    has been already disposed — impossible to access it.
    This might be caused by the object having been destroyed from C code
    using something such as destroy(), dispose(), or remove() vfuncs.
    == Stack trace for context 0x60991609b710 ==
    #0 b   resource:///org/gnome/shell/ui/workspaceThumbnail.js:1334 (5e050636fb0 @ 17)
    #1 i   resource:///org/gnome/shell/ui/main.js:279 (30c932d102e0 @ 119)

This is because the later we added is running even when not needed (e.g
when the placeholder is not visible already), but also because we may
run the later callback after the parent has been destroyed.

Prevent this to happen, by tracking the later

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>

12 months agotests/shell: Add basic multi-monitor test
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 03:37:49 +0000 (04:37 +0100)]
tests/shell: Add basic multi-monitor test

We only care about creating a new monitor and ensure that the new
geometries respect the monitors setup

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>

12 months agotests/shell: Add a super minimal test
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 03:11:15 +0000 (04:11 +0100)]
tests/shell: Add a super minimal test

While it only starts the shell, waits for startup being completed and
return, it's relevant to check the shutdown process in this phase and
to ensure that we cleanup things as expected

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>

12 months agostatus/dwellClick: Remove unused return value
Florian Müllner [Fri, 31 Oct 2025 17:42:54 +0000 (18:42 +0100)]
status/dwellClick: Remove unused return value

The method is never used as source function, so there is no reason
to return SOURCE_REMOVE.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3946>

12 months agoci: Fix artifacts path for tests job
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 04:25:04 +0000 (05:25 +0100)]
ci: Fix artifacts path for tests job

We (I) changed the test job to use a different path in commit 342d7ab34,
but the artifacts path was not adjusted :(

Fixes: 342d7ab34a ("ci: Start with a fresh build dir to ensure test dependencies are correct")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3945>

12 months agoUpdate Japanese translation
Makoto Sakaguchi [Fri, 31 Oct 2025 15:31:18 +0000 (15:31 +0000)]
Update Japanese translation

12 months agobrightnessManager: Use slider as bias when auto brightness is being used
Sebastian Wick [Mon, 20 Oct 2025 11:38:37 +0000 (13:38 +0200)]
brightnessManager: Use slider as bias when auto brightness is being used

The code previously tried to ensure that the sliders were disabled when
auto brightness was active, and determine the brightness just from the
auto brightness target we get from g-s-d.

It turns out that users do want to still have some control over the
brightness, even if auto brightness is active.

The slider is now being used as a bias for the auto brightness target
instead.

This also means that we can drop the BrightnessScale::locked property.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3935>

12 months agobrightnessManager: Propagate any attempted brightness change
Sebastian Wick [Thu, 30 Oct 2025 10:43:19 +0000 (11:43 +0100)]
brightnessManager: Propagate any attempted brightness change

The BrightnessScale was trying to be smart by not notifying changes of
its value when an action on it (stepUp, stepDown, cycleUp, set value)
resulted in no change.

It turns out that users do want to see an OSD even when their action
resulted in no change.

Always notify about attempted changes instead.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8770
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3941>

12 months agologinManager: Use systemd session auto object to get session ID
Alessandro Bono [Thu, 30 Oct 2025 10:47:17 +0000 (11:47 +0100)]
loginManager: Use systemd session auto object to get session ID

Relying on the Display property is buggy when the gdm user spawns more than
one gnome-shell instance.
```
$ loginctl
SESSION  UID USER   SEAT  LEADER CLASS         TTY   IDLE SINCE
     11   42 gdm    -     11778  manager-early -     no   -
    c20   42 gdm    seat0 34313  greeter       tty1  yes  17h ago
    c21   42 gdm    -     34938  greeter       -     no   -
    c22   42 gdm    -     35693  greeter       -     no   -
```

From the logs:
```
$ journalctl -b | grep "Will monitor"
[...]
Oct 29 15:14:59 gnome-shell[34961]: Will monitor session c20
Oct 29 15:22:57 gnome-shell[35716]: Will monitor session c20
Oct 29 15:22:58 gnome-shell[35716]: Will monitor session c20
```

Use the systemd session auto object for getting the session id. We can't return
directly the session proxy created from it because it won't emit signals. From
the documentation[1]:
```
Signals are only emitted on objects referencing a specific session ID not on the
"/org/freedesktop/login1/session/self" or "/org/freedesktop/login1/session/auto"
convenience objects, as they can only be dereferenced relative to a method caller.
```

[1] https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3942>

12 months agologinManager: Improve log
Alessandro Bono [Thu, 30 Oct 2025 10:47:12 +0000 (11:47 +0100)]
loginManager: Improve log

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3942>

12 months agoosk-layouts: Drop comma key from de-extended and at-extended layouts
Sebastian Keller [Wed, 29 Oct 2025 10:09:02 +0000 (11:09 +0100)]
osk-layouts: Drop comma key from de-extended and at-extended layouts

The row containing that key was one key too long, which was causing
misalignment. The comma key is not shown in the us-extended layout
either and is available via long press on the dot key or via ?123,
making it the best candidate to remove from these layouts.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8756
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3940>

12 months agoRevert "keyboardManager: Update layout index before keymap"
Sebastian Keller [Tue, 28 Oct 2025 23:09:50 +0000 (00:09 +0100)]
Revert "keyboardManager: Update layout index before keymap"

This reverts commit f643915b32fbc116ec09572276af645300589764.

This is not needed anymore now that e8d73262 has been reverted and it
was causing problems in X11 sessions, such as when switching from the
4th layout to the 3rd using the keyboard layout menu.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3939>

12 months agoRevert "status/keyboard: Track ::layout-layout-group-changed for changes"
Sebastian Keller [Tue, 28 Oct 2025 22:22:26 +0000 (23:22 +0100)]
Revert "status/keyboard: Track ::layout-layout-group-changed for changes"

This reverts commit e8d73262c73246205e8f7887d99aeb2356cfa89e.

The commit was causing freezes when changing layouts in some situations
and not all of these were adressed by f643915b, such as when switching
from the 3rd to the 4th layout using a xkb shortcut in the X11 session
with 4 layouts.

It was also breaking the order of switching layouts using modifier-only
xkb shortcuts to switch to the next group, which it caused to advance
multiple groups because of the shortcut being handled via both
_modifiersSwitcher() and _layoutGroupChanged().

Further it was possible for _layoutGroupChanged() to trigger an error
due to the locale layout added by _buildGroupStrings() at the end of the
xkb layout list being accessible via the xkb shortcuts. That layout was
not present in _inputSources, leading to "is" being undefined.

Reopens: https://gitlab.gnome.org/GNOME/mutter/-/issues/3926
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8738
Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3930
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3939>

12 months agotools: Symlink node_modules in project root
Florian Müllner [Tue, 21 Oct 2025 18:12:59 +0000 (20:12 +0200)]
tools: Symlink node_modules in project root

NPM assumes quite strongly that it manages the project as a
whole and its package/lock files are located in the project
root.

While we somehow managed to keep the npm tooling in a subfolder,
this comes at the cost of breaking imports of additional modules.

This will become relevant when we update eslint to a supported
version, as we want to keep using the `junit` formatter in CI,
which has now been split out into a separate module.

So bite the bullet and make the node_modules folder available in
the project root.

On the plus side, having the node_modules folder in the project
root allows language servers in IDEs/editors to pick it up.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3929>

12 months agotools: Pin git node modules
Florian Müllner [Thu, 23 Oct 2025 12:06:08 +0000 (14:06 +0200)]
tools: Pin git node modules

Both changes in the config (like new/changes rules) and the eslint wrapper
(like updating to eslint 9.x) could require changes on the shell side, and
therefore require conscious update rather than randomly breaking the CI.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3929>

12 months agokeyboardManager: Update layout index before keymap
Carlos Garnacho [Thu, 23 Oct 2025 18:56:10 +0000 (20:56 +0200)]
keyboardManager: Update layout index before keymap

Unfortunately, layouts and keymaps are not considered atomic data
even though they are closely related. Furthermore, these are async
operations that are not immediate to apply, and each of them result
in a plethora of updates down in Mutter (layout group being a subset
of keymaps).

Doing things in the current order, these updates do result in a
feedback loop, since the layout index is not changed altogether with
the keymap, but the keymap update is also seen as a layout change.

Even though it still does result in unnecessary intermediate updates,
changing the layout index first avoids the feedback loop, since it
will already match with the expectations after the ClutterKeymap is
updated.

This fixes deadlocked shell when using xkb options that trigger layout
changes through the ISO_Next_Group key emission, when the group change
also triggered a keymap update (e.g. moving to a different group
per KeyboardManager.MAX_LAYOUTS_PER_GROUP limits).

This does not fix being able to switch between all layouts, when
there is more than one group. This will be fixed in later commits.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8738
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3930>

12 months agokeyboard: Don't move window when it got unmanaged during shift animation
Sebastian Keller [Sat, 25 Oct 2025 11:03:55 +0000 (13:03 +0200)]
keyboard: Don't move window when it got unmanaged during shift animation

When a window with a text-entry at the bottom that had triggered the OSK
and was shifted up to avoid overlapping the OSK is closed right after
losing keyboard focus, this results in a crash. The focus loss triggers
the animation to move the window actor back into its original position,
which moves the underlying window when finished. That however will fail
when the window has been unmanaged and some of the underlying resources
have already been destroyed while the animation was playing.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8752
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3933>

12 months agopanel: Fix addExternalIndicator() JSDoc comment
ClarityStorm [Mon, 27 Oct 2025 23:12:44 +0000 (23:12 +0000)]
panel: Fix addExternalIndicator() JSDoc comment

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3937>

12 months agoci: Upgrade ci-fairy
Florian Müllner [Mon, 20 Oct 2025 12:48:18 +0000 (14:48 +0200)]
ci: Upgrade ci-fairy

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3924>

12 months agoci: Drop check-merge-request job
Jonas Ådahl [Sat, 25 Oct 2025 09:08:35 +0000 (11:08 +0200)]
ci: Drop check-merge-request job

The job is broken due to permission changes in GitLab, and it seems what
is checked for is now the default, making the job less useful, thus drop
it.

Related: https://gitlab.freedesktop.org/freedesktop/ci-templates/-/issues/81
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3932>

12 months agosystemActions: Don't log error when cancelled
Florian Müllner [Tue, 21 Oct 2025 22:57:26 +0000 (00:57 +0200)]
systemActions: Don't log error when cancelled

If the logout/reboot/shutdown actions are available, we expect them
to succeed. Unfortunately that changed in the light of systemd
inhibitors (that we don't know about in the shell, and that prevent
those actions now).

While it would be good to fix the underlying issue, we can at least
improve the error reporting in that case and not log the error when
the operation was cancelled: We don't know the underlying reason,
unlike gnome-session which should have logged a more helpful message.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8749
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3927>

12 months agojs: Use logErrorUnlessCancelled() helper
Florian Müllner [Wed, 22 Oct 2025 01:30:41 +0000 (03:30 +0200)]
js: Use logErrorUnlessCancelled() helper

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3927>

12 months agoerrorUtils: Add logErrorUnlessCancelled() helper
Florian Müllner [Wed, 22 Oct 2025 00:59:20 +0000 (02:59 +0200)]
errorUtils: Add logErrorUnlessCancelled() helper

It is quite common to handle errors by ignoring them in case of
CANCELLED, and otherwise log them via logError().

Add a small helper method that implements that behavior, including
if the original error is wrapped in a Gio.DBusError.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3927>

12 months agolint: Enable 'prefer-const' rule
Florian Müllner [Fri, 24 Oct 2025 11:39:03 +0000 (13:39 +0200)]
lint: Enable 'prefer-const' rule

Now that all code conforms with the rule, we can enforce it to make
sure we stick to it with new code.

Relax the rule for destructuring, so we don't have to jump through
hoops to avoid "mixed" assignments.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3931>

12 months agojs: Use const declarations where possible
Florian Müllner [Fri, 24 Oct 2025 11:39:37 +0000 (13:39 +0200)]
js: Use const declarations where possible

It is useful to indicate clearly that a value is read-only, and
we have already been doing so for new code for a long time. But
in order to actually enforce this, we have to adjust all existing
code.

Luckily the change is trivial enough to do (thanks to `eslint --fix`),
so do it now.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3931>

12 months agokeyboardManager: Simplify loop
Florian Müllner [Fri, 24 Oct 2025 13:14:16 +0000 (15:14 +0200)]
keyboardManager: Simplify loop

We can iterate over ids directly instead of using an index.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3931>

12 months agokeyboardManager: Minor style fix
Florian Müllner [Fri, 24 Oct 2025 12:06:30 +0000 (14:06 +0200)]
keyboardManager: Minor style fix

Local variables are already limited by their scope, so there is
no need to mark them as private with the '_' prefix.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3931>

12 months agokeyboardManager: Fix typo in comment
Florian Müllner [Fri, 24 Oct 2025 13:37:16 +0000 (15:37 +0200)]
keyboardManager: Fix typo in comment

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3931>

12 months agoci: Add executable bit to malcontent-client
Ignacy Kuchciński [Tue, 21 Oct 2025 14:14:40 +0000 (16:14 +0200)]
ci: Add executable bit to malcontent-client

For some reason, installing malcontent with buildah as a proxy, results
in the malcontent-client binary missing the execute permission, even
though manually invoking the install-meson-project.sh script results in
the correct permissions being set.

Work around this by manually setting the correct permissions on the
malcontent-client binary.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3918>

12 months agonetworkAgent: Do not remove child watch source
Michael Catanzaro [Mon, 20 Oct 2025 21:26:34 +0000 (16:26 -0500)]
networkAgent: Do not remove child watch source

The child watch source is the only thing that reaps the child process.
We cannot remove it until it fires or the child will remain a zombie.
So, just leave the source attached. Trying to remove it does not seem
easy, and I don't see any need; we expect the child process to exit
quickly, so this doesn't seem harmful.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7083
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3926>

12 months agoosk-layout: Add extended layouts for German and German (Austria)
Leonidas Adaktylos [Sun, 19 Oct 2025 17:58:28 +0000 (19:58 +0200)]
osk-layout: Add extended layouts for German and German (Austria)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3923>

12 months agologinDialog: Sort session list by name
Balló György [Fri, 17 Oct 2025 17:42:21 +0000 (19:42 +0200)]
loginDialog: Sort session list by name

Instead of sorting the available sessions by their ID, sort them by their
name. This ensures that the list is sorted based on the system locale.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3920>